
package net.guerlab.sdk.anubis.entity;

import java.math.BigDecimal;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * 蜂鸟订单
 * 
 * @author guer
 *
 */
public class AnubisOrderAddInfo {

    /**
     * 门店编号
     */
    @JsonProperty("chain_store_code")
    private String chainStoreCode;

    /**
     * 商户备注信息
     */
    @JsonProperty("partner_remark")
    private String partnerRemark;

    /**
     * 商户订单号,要求唯一
     */
    @JsonProperty("partner_order_code")
    private String partnerOrderCode;

    /**
     * 回调地址,订单状态变更时会调用此接口传递状态信息
     */
    @JsonProperty("notify_url")
    private String notifyUrl;

    /**
     * 订单类型
     * <ul>
     * <li>1: 蜂鸟配送，支持90分钟内送达</li>
     * </ul>
     */
    @JsonProperty("order_type")
    private int orderType = 1;

    /**
     * 取货点信息
     */
    @JsonProperty("transport_info")
    private TransportInfo transportInfo;

    /**
     * 下单时间(毫秒)
     */
    @JsonProperty("order_add_time")
    private Long orderAddTime;

    /**
     * 订单总金额（不包含商家的任何活动以及折扣的金额）
     */
    @JsonProperty("order_total_amount")
    private BigDecimal orderTotalAmount;

    /**
     * 客户需要支付的金额
     */
    @JsonProperty("order_actual_amount")
    private BigDecimal orderActualAmount;

    /**
     * 订单总重量（kg），营业类型选定为果蔬生鲜、商店超市、其他三类时必填，大于0kg并且小于等于6kg
     */
    @JsonProperty("order_weight")
    private BigDecimal orderWeight;

    /**
     * 用户备注
     */
    @JsonProperty("order_remark")
    private String orderRemark;

    /**
     * 是否需要发票
     * <ul>
     * <li>0:不需要</li>
     * <li>1:需要</li>
     * </ul>
     */
    @JsonProperty("is_invoiced")
    private int isInvoiced;

    /**
     * 发票抬头, 如果需要发票, 此项必填
     */
    @JsonProperty("invoice")
    private String invoice;

    /**
     * 订单支付状态
     * <ul>
     * <li>0:未支付</li>
     * <li>1:已支付</li>
     * </ul>
     */
    @JsonProperty("order_payment_status")
    private int orderPaymentStatus;

    /**
     * 订单支付方式
     * <ul>
     * <li>1:在线支付</li>
     * </ul>
     */
    @JsonProperty("order_payment_method")
    private int orderPaymentMethod;

    /**
     * 是否需要ele代收
     * <ul>
     * <li>0:否</li>
     * </ul>
     */
    @JsonProperty("is_agent_payment")
    private int isAgentPayment;

    /**
     * 需要代收时客户应付金额, 如果需要ele代收 此项必填
     */
    @JsonProperty("require_payment_pay")
    private BigDecimal requirePaymentPay;

    /**
     * 订单货物件数
     */
    @JsonProperty("goods_count")
    private int goodsCount;

    /**
     * 需要送达时间（毫秒).
     */
    @JsonProperty("require_receive_time")
    private Long requireReceiveTime;

    /**
     * 商家订单流水号, 方便配送骑手到店取货, 支持数字,字母及#等常见字符. 如不填写, 蜂鸟将截取商家订单号后4位作为流水号.
     */
    @JsonProperty("serial_number")
    private String serialNumber;

    /**
     * 接收人信息
     */
    @JsonProperty("receiver_info")
    private ReceiverInfo receiverInfo;

    /**
     * 商品列表
     */
    @JsonProperty("items_json")
    private List<ItemInfo> itemInfos;

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("AnubisOrderAddInfo [partnerRemark=");
        builder.append(partnerRemark);
        builder.append(", partnerOrderCode=");
        builder.append(partnerOrderCode);
        builder.append(", notifyUrl=");
        builder.append(notifyUrl);
        builder.append(", orderType=");
        builder.append(orderType);
        builder.append(", transportInfo=");
        builder.append(transportInfo);
        builder.append(", orderAddTime=");
        builder.append(orderAddTime);
        builder.append(", orderTotalAmount=");
        builder.append(orderTotalAmount);
        builder.append(", orderActualAmount=");
        builder.append(orderActualAmount);
        builder.append(", orderWeight=");
        builder.append(orderWeight);
        builder.append(", orderRemark=");
        builder.append(orderRemark);
        builder.append(", isInvoiced=");
        builder.append(isInvoiced);
        builder.append(", invoice=");
        builder.append(invoice);
        builder.append(", orderPaymentStatus=");
        builder.append(orderPaymentStatus);
        builder.append(", orderPaymentMethod=");
        builder.append(orderPaymentMethod);
        builder.append(", isAgentPayment=");
        builder.append(isAgentPayment);
        builder.append(", requirePaymentPay=");
        builder.append(requirePaymentPay);
        builder.append(", goodsCount=");
        builder.append(goodsCount);
        builder.append(", requireReceiveTime=");
        builder.append(requireReceiveTime);
        builder.append(", serialNumber=");
        builder.append(serialNumber);
        builder.append(", receiverInfo=");
        builder.append(receiverInfo);
        builder.append(", itemInfos=");
        builder.append(itemInfos);
        builder.append("]");
        return builder.toString();
    }

    /**
     * 返回 商户备注信息
     *
     * @return 商户备注信息
     */
    public String getPartnerRemark() {
        return partnerRemark;
    }

    /**
     * 设置商户备注信息
     *
     * @param partnerRemark
     *            商户备注信息
     */
    public void setPartnerRemark(
            String partnerRemark) {
        this.partnerRemark = partnerRemark;
    }

    /**
     * 返回 商户订单号,要求唯一
     *
     * @return 商户订单号
     */
    public String getPartnerOrderCode() {
        return partnerOrderCode;
    }

    /**
     * 设置 商户订单号,要求唯一
     *
     * @param partnerOrderCode
     *            商户订单号
     */
    public void setPartnerOrderCode(
            String partnerOrderCode) {
        this.partnerOrderCode = partnerOrderCode;
    }

    /**
     * 返回 回调地址,订单状态变更时会调用此接口传递状态信息
     *
     * @return 回调地址
     */
    public String getNotifyUrl() {
        return notifyUrl;
    }

    /**
     * 设置回调地址,订单状态变更时会调用此接口传递状态信息
     *
     * @param notifyUrl
     *            回调地址
     */
    public void setNotifyUrl(
            String notifyUrl) {
        this.notifyUrl = notifyUrl;
    }

    /**
     * 返回 订单类型
     * <ul>
     * <li>1: 蜂鸟配送，支持90分钟内送达</li>
     * </ul>
     *
     * @return 订单类型
     */
    public int getOrderType() {
        return orderType;
    }

    /**
     * 设置订单类型
     * <ul>
     * <li>1: 蜂鸟配送，支持90分钟内送达</li>
     * </ul>
     *
     * @param orderType
     *            订单类型
     */
    public void setOrderType(
            int orderType) {
        this.orderType = orderType;
    }

    /**
     * 返回 取货点信息
     *
     * @return 取货点信息
     */
    public TransportInfo getTransportInfo() {
        return transportInfo;
    }

    /**
     * 设置取货点信息
     *
     * @param transportInfo
     *            取货点信息
     */
    public void setTransportInfo(
            TransportInfo transportInfo) {
        this.transportInfo = transportInfo;
    }

    /**
     * 返回 下单时间(毫秒)
     *
     * @return 下单时间
     */
    public Long getOrderAddTime() {
        return orderAddTime;
    }

    /**
     * 设置下单时间(毫秒)
     *
     * @param orderAddTime
     *            下单时间
     */
    public void setOrderAddTime(
            Long orderAddTime) {
        this.orderAddTime = orderAddTime;
    }

    /**
     * 返回 订单总金额（不包含商家的任何活动以及折扣的金额）
     *
     * @return 订单总金额
     */
    public BigDecimal getOrderTotalAmount() {
        return orderTotalAmount;
    }

    /**
     * 设置订单总金额（不包含商家的任何活动以及折扣的金额）
     *
     * @param orderTotalAmount
     *            订单总金额
     */
    public void setOrderTotalAmount(
            BigDecimal orderTotalAmount) {
        this.orderTotalAmount = orderTotalAmount;
    }

    /**
     * 返回 客户需要支付的金额
     *
     * @return 客户需要支付的金额
     */
    public BigDecimal getOrderActualAmount() {
        return orderActualAmount;
    }

    /**
     * 设置客户需要支付的金额
     *
     * @param orderActualAmount
     *            客户需要支付的金额
     */
    public void setOrderActualAmount(
            BigDecimal orderActualAmount) {
        this.orderActualAmount = orderActualAmount;
    }

    /**
     * 返回 订单总重量（kg），营业类型选定为果蔬生鲜、商店超市、其他三类时必填，大于0kg并且小于等于6kg
     *
     * @return 订单总重量
     */
    public BigDecimal getOrderWeight() {
        return orderWeight;
    }

    /**
     * 设置 订单总重量（kg），营业类型选定为果蔬生鲜、商店超市、其他三类时必填，大于0kg并且小于等于6kg
     *
     * @param orderWeight
     *            订单总重量
     */
    public void setOrderWeight(
            BigDecimal orderWeight) {
        this.orderWeight = orderWeight;
    }

    /**
     * 返回 用户备注
     *
     * @return 用户备注
     */
    public String getOrderRemark() {
        return orderRemark;
    }

    /**
     * 设置用户备注
     *
     * @param orderRemark
     *            用户备注
     */
    public void setOrderRemark(
            String orderRemark) {
        this.orderRemark = orderRemark;
    }

    /**
     * 返回 是否需要发票
     * <ul>
     * <li>0:不需要</li>
     * <li>1:需要</li>
     * </ul>
     *
     * @return 是否需要发票
     */
    public int getIsInvoiced() {
        return isInvoiced;
    }

    /**
     * 设置是否需要发票
     * <ul>
     * <li>0:不需要</li>
     * <li>1:需要</li>
     * </ul>
     *
     * @param isInvoiced
     *            是否需要发票
     */
    public void setIsInvoiced(
            int isInvoiced) {
        this.isInvoiced = isInvoiced;
    }

    /**
     * 返回 发票抬头, 如果需要发票, 此项必填
     *
     * @return 发票抬头
     */
    public String getInvoice() {
        return invoice;
    }

    /**
     * 设置发票抬头, 如果需要发票, 此项必填
     *
     * @param invoice
     *            发票抬头
     */
    public void setInvoice(
            String invoice) {
        this.invoice = invoice;
    }

    /**
     * 返回 订单支付状态
     * <ul>
     * <li>0:未支付</li>
     * <li>1:已支付</li>
     * </ul>
     *
     * @return 订单支付状态
     */
    public int getOrderPaymentStatus() {
        return orderPaymentStatus;
    }

    /**
     * 设置订单支付状态
     * <ul>
     * <li>0:未支付</li>
     * <li>1:已支付</li>
     * </ul>
     *
     * @param orderPaymentStatus
     *            订单支付状态
     */
    public void setOrderPaymentStatus(
            int orderPaymentStatus) {
        this.orderPaymentStatus = orderPaymentStatus;
    }

    /**
     * 返回 订单支付方式
     * <ul>
     * <li>1:在线支付</li>
     * </ul>
     *
     * @return 订单支付方式
     */
    public int getOrderPaymentMethod() {
        return orderPaymentMethod;
    }

    /**
     * 设置订单支付方式
     * <ul>
     * <li>1:在线支付</li>
     * </ul>
     *
     * @param orderPaymentMethod
     *            订单支付方式
     */
    public void setOrderPaymentMethod(
            int orderPaymentMethod) {
        this.orderPaymentMethod = orderPaymentMethod;
    }

    /**
     * 返回 是否需要ele代收
     * <ul>
     * <li>0:否</li>
     * </ul>
     *
     * @return 是否需要ele代收
     */
    public int getIsAgentPayment() {
        return isAgentPayment;
    }

    /**
     * 设置是否需要ele代收
     * <ul>
     * <li>0:否</li>
     * </ul>
     *
     * @param isAgentPayment
     *            是否需要ele代收
     */
    public void setIsAgentPayment(
            int isAgentPayment) {
        this.isAgentPayment = isAgentPayment;
    }

    /**
     * 返回 需要代收时客户应付金额, 如果需要ele代收 此项必填
     *
     * @return 需要代收时客户应付金额
     */
    public BigDecimal getRequirePaymentPay() {
        return requirePaymentPay;
    }

    /**
     * 设置需要代收时客户应付金额, 如果需要ele代收 此项必填
     *
     * @param requirePaymentPay
     *            需要代收时客户应付金额
     */
    public void setRequirePaymentPay(
            BigDecimal requirePaymentPay) {
        this.requirePaymentPay = requirePaymentPay;
    }

    /**
     * 返回 订单货物件数
     *
     * @return 订单货物件数
     */
    public int getGoodsCount() {
        return goodsCount;
    }

    /**
     * 设置订单货物件数
     *
     * @param goodsCount
     *            订单货物件数
     */
    public void setGoodsCount(
            int goodsCount) {
        this.goodsCount = goodsCount;
    }

    /**
     * 返回 需要送达时间（毫秒).
     *
     * @return 需要送达时间
     */
    public Long getRequireReceiveTime() {
        return requireReceiveTime;
    }

    /**
     * 设置需要送达时间（毫秒).
     *
     * @param requireReceiveTime
     *            需要送达时间
     */
    public void setRequireReceiveTime(
            Long requireReceiveTime) {
        this.requireReceiveTime = requireReceiveTime;
    }

    /**
     * 返回 商家订单流水号, 方便配送骑手到店取货, 支持数字,字母及#等常见字符. 如不填写, 蜂鸟将截取商家订单号后4位作为流水号.
     *
     * @return 商家订单流水号
     */
    public String getSerialNumber() {
        return serialNumber;
    }

    /**
     * 设置商家订单流水号, 方便配送骑手到店取货, 支持数字,字母及#等常见字符. 如不填写, 蜂鸟将截取商家订单号后4位作为流水号.
     *
     * @param serialNumber
     *            商家订单流水号
     */
    public void setSerialNumber(
            String serialNumber) {
        this.serialNumber = serialNumber;
    }

    /**
     * 返回 接收人信息
     *
     * @return 接收人信息
     */
    public ReceiverInfo getReceiverInfo() {
        return receiverInfo;
    }

    /**
     * 设置接收人信息
     *
     * @param receiverInfo
     *            接收人信息
     */
    public void setReceiverInfo(
            ReceiverInfo receiverInfo) {
        this.receiverInfo = receiverInfo;
    }

    /**
     * 返回 商品列表
     *
     * @return 商品列表
     */
    public List<ItemInfo> getItemInfos() {
        return itemInfos;
    }

    /**
     * 设置商品列表
     *
     * @param itemInfos
     *            商品列表
     */
    public void setItemInfos(
            List<ItemInfo> itemInfos) {
        this.itemInfos = itemInfos;
    }

    /**
     * 返回 门店编号
     *
     * @return 门店编号
     */
    public String getChainStoreCode() {
        return chainStoreCode;
    }

    /**
     * 设置门店编号
     *
     * @param chainStoreCode
     *            门店编号
     */
    public void setChainStoreCode(
            String chainStoreCode) {
        this.chainStoreCode = chainStoreCode;
    }

}